#define _CRT_SECURE_NO_WARNINGS 1
//#include<iostream>
//using namespace std;

//namespace zpl
//{
//	class string
//	{
//	private:
//		char* _str;
//	public:
//		const char* c_str()
//		{
//			return _str;
//		}
//		void swap(string& s)
//		{
//			std::swap(_str, s._str);
//		}
	/*	string(const char* str = "")
		{
			size_t len = strlen(str);
			_str = new char[len + 1];
			strcpy(_str, str);
		}
		string(const string& s)
		{
			size_t len = strlen(s._str);
			_str = new char[len + 1];
			strcpy(_str, s._str);
		}
		string& operator=(const string& s)
		{
			size_t len = strlen(s._str);
			char* tmp = new char[len + 1];
			strcpy(tmp, s._str);
			delete[] _str;
			_str = tmp;
			return *this;
		}*/
	/*	string(const char* str = "")
		{
			size_t len = strlen(str);
			_str = new char[len + 1];
			strcpy(_str, str);
		}
		string(const string& s)
		{
			string tmp(s._str);
			swap(tmp);
		}
		string& operator=(string s)
		{
			swap(s);
			return *this;
		}
	};
}*/


#include"string.h"

int main()
{
	zpl::string s1 = "hello";
	zpl::string s2(s1);
	zpl::string s3 = s1;
	s3 = "hhhhh";
	cout << s1 << endl;
	cout << s2 << endl;
	cout << s3 << endl;
	cout << s1.substr(0, 3) << endl;
	s3 += "xxxx";
	cout << s3 << endl;
	size_t pos = s1.find('l');
	cout << pos << endl;
	s1.insert(0, 'x');
	cout << s1 << endl;
	cout << s1.c_str() << endl;
	cout << s1.size() << endl;
	s2.clear();
	s1.erase(2, 3);
	cout << s1 << endl;
	cout << s2 << endl;
	return 0;
}